/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package sopra09.lv6659438.controller.eintragErfassen;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.actions.LookupDispatchAction;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;
import java.util.*;
import javax.naming.InitialContext;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import sopra09.lv6659438.logik.eintragErfassen.EintragErfassenALLocal;

/**
 * Verarbeitet die Daten einer neu eingegebenen Zeitschrift
 * @author TJ
 */
public class ZeitschriftEingebenLDA extends LookupDispatchAction {
    
    
    private final static String WEITER = "Weiter";


    /** Provides the mapping from resource key to method name.
     * @return Resource key / method name map.
     */
    protected Map getKeyMethodMap() {
      Map map = new HashMap();
      map.put("zeitschriftbutton.weiter", "literatureingabeVerarbeiten");
      return map;
    }
    
    /** Action called on zeitschriftbutton.weiter
     * @param mapping The ActionMapping used to select this instance.
     * @param form The optional ActionForm bean for this request.
     * @param request The HTTP Request we are processing.
     * @param response The HTTP Response we are processing.
     * @throws java.lang.Exception
     * @return ActionForward
     */
    public ActionForward literatureingabeVerarbeiten(ActionMapping mapping,
          ActionForm form,
          HttpServletRequest request,
          HttpServletResponse response) throws java.lang.Exception {

      log.warn("literatureingabeVerarbeiten(...) beginnt");

      ZeitschriftEingebenVF vf = (ZeitschriftEingebenVF) form;
      log.warn("vf.getTitel()ist: " + vf.getTitel());
      log.warn("vf.getNummer()ist: " + vf.getNummer());
      log.warn("vf.getVolumen()ist: " + vf.getVolumen());

      // weiterreichen der zeitschriftendaten an die anwendungslogik
      InitialContext ic = new InitialContext();
      EintragErfassenALLocal eintragErfassen = (EintragErfassenALLocal)
              ic.lookup("java:comp/env/ejb/eintragErfassen");

      boolean erfolg =
              eintragErfassen.verarbeiteZeitschrift(vf.getTitel(), vf.getNummer(), vf.getVolumen());
      
    // zeitschrift erfolgreich verarbeitet
    if(erfolg) {
        log.warn("da erfolg " + erfolg +
                " ist, wird an " + mapping.findForward(WEITER).getPath() + " weitergeleitet");

      request.getSession().setAttribute("AWF", "Literatureintrag erfassen");
      request.getSession().setAttribute("AA", "Typ auswählen");

      return mapping.findForward(WEITER);

    // zeitschrift nicht erfolgreich verarbeitet
    } else {
        log.warn("da erfolg " + erfolg +
                " ist, wird an " + mapping.getInputForward().getPath() + " weitergeleitet" +
                " und fehlermeldung.zeitschriftEingeben ausgegeben");
          ActionMessages fehler = new ActionMessages();
          fehler.add("eingabeNichtVerarbeitet", new ActionMessage("fehlermeldung.zeitschriftEingeben"));
          saveErrors(request, fehler);

          return mapping.getInputForward();
    }

  }
    
}